<?php

// +----------------------------------------------------------------------

// | OneThink [ WE CAN DO IT JUST THINK ]

// +----------------------------------------------------------------------

// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.

// +----------------------------------------------------------------------

// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )

// +----------------------------------------------------------------------

// | Author: liu21st <liu21st@gmail.com>

// +----------------------------------------------------------------------



namespace Common\Api;

class CategoryApi {

    /**

     * 获取分类信息并缓存分类

     * @param  integer $id    分类ID

     * @param  string  $field 要获取的字段名

     * @return string         分类信息

     */

    public static function get_category($id, $field = null){

        static $list;



        /* 非法分类ID */

        if(empty($id) || !is_numeric($id)){

            return '';

        }



        /* 读取缓存数据 */

        if(empty($list)){

            $list = S('sys_category_list');

        }



        /* 获取分类名称 */

        if(!isset($list[$id])){

            $cate = M('Category')->find($id);

            if(!$cate || 1 != $cate['status']){ //不存在分类，或分类被禁用

                return '';

            }

            $list[$id] = $cate;

            S('sys_category_list', $list); //更新缓存

        }

        return is_null($field) ? $list[$id] : $list[$id][$field];

    }



    /* 根据ID获取分类标识 */

    public static function get_category_name($id){

        return get_category($id, 'name');

    }



    /* 根据ID获取分类名称 */

    public static function get_category_title($id){

        return get_category($id, 'title');

    }



    /**

     * 获取参数的所有父级分类

     * @param int $cid 分类id

     * @return array 参数分类和父类的信息集合

     * @author huajie <banhuajie@163.com>

     */

    public static function get_parent_category($cid){

        if(empty($cid)){

            return false;

        }

        $cates  =   M('Category')->where(array('status'=>1))->field('id,title,pid')->order('sort')->select();

        $child  =   get_category($cid);	//获取参数分类的信息

        $pid    =   $child['pid'];

        $temp   =   array();

        $res[]  =   $child;

        while(true){

            foreach ($cates as $key=>$cate){

                if($cate['id'] == $pid){

                    $pid = $cate['pid'];

                    array_unshift($res, $cate);	//将父分类插入到数组第一个元素前

                }

            }

            if($pid == 0){

                break;

            }

        }

        return $res;

    }

}